package cc.rengu.igas.channel.upqc.facade;

import cc.rengu.igas.channel.upqc.facade.request.*;
import cc.rengu.igas.channel.upqc.facade.response.*;
import cc.rengu.igas.channel.upqc.facade.result.Result;

/**
 * 银联二维码付款方服务组件
 */
public interface UpqcPayerService {

    /**
     * C2B码申请
     *
     * @param genC2BNoRequest
     * @return C2B码申请应答
     * @
     */
    Result<GenC2BNoResponse> genC2BNo(GenC2BNoRequest genC2BNoRequest);

    /**
     * C2B附加处理通知
     *
     * @param c2bAddDealNoticeRequest
     * @return C2B附加处理通知应答
     * @
     */
    Result<C2BAddDealNoticeResponse> c2bAddDealNotice(C2BAddDealNoticeRequest c2bAddDealNoticeRequest);

    /**
     * 查询订单
     *
     * @param b2CQueryOrderRequest
     * @return 查询订单应答
     * @
     */
    Result<B2CQueryOrderResponse> b2cQueryOrder(B2CQueryOrderRequest b2CQueryOrderRequest);


    /**
     * 查询营销
     *
     * @param b2CQueryCouponRequest
     * @return 查询营销应答
     * @
     */
    Result<B2CQueryCouponResponse> b2cQueryCoupon(B2CQueryCouponRequest b2CQueryCouponRequest);


    /**
     * 付款
     *
     * @param b2COrderPayRequest
     * @return 付款结果
     * @
     */
    Result<B2COrderPayResponse> b2cOrderPay(B2COrderPayRequest b2COrderPayRequest);


    /**
     * 付款查询
     *
     * @param b2COrderPayQueryRequest
     * @return 付款查询应答
     * @
     */
    Result<B2COrderPayQueryResponse> b2cOrderPayQuery(B2COrderPayQueryRequest b2COrderPayQueryRequest);


    /**
     * ATM 取现操作通知
     *
     * @param b2CATMCashNoticeRequest
     * @return 取现操作通知应答
     * @
     */
    Result<B2CATMCashNoticeResponse> b2cATMCashNotice(B2CATMCashNoticeRequest b2CATMCashNoticeRequest);

}

